/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.bc;


import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.cip.esymons.eventos.be.EgresosAdapter;
import org.cip.esymons.eventos.be.Evento;
import org.cip.esymons.eventos.be.IngresosAdapter;
import org.cip.esymons.eventos.be.UtilidadAdapter;
import org.cip.esymons.general.be.Area;
import org.cip.esymons.general.be.Capitulo;
import org.cip.esymons.eventos.be.Preevento;

/**
 *
 * @author OscarA
 */
public class EventoDelegate {

    EventoFacadeLocal local;

    public EventoDelegate() {
        local = lookupEventoFacade();
    }

    public List<Evento> buscarEventosLike(String cond) {
        return local.listarEventosNombreLike(cond);
    }

    public void registrarEvento(Evento eve) {
        local.create(eve);
    }

    private EventoFacadeLocal lookupEventoFacade() {
        try {
            Context c = new InitialContext();
            return (EventoFacadeLocal) c.lookup("java:comp/env/EventoFacade");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }

    public List<Evento> listarEventos() throws Exception {
        try {
            return local.findAll();
        } catch (Exception e) {
            local = lookupEventoFacade();
            throw new Exception(e.getStackTrace().toString(), e);
        }
    }

    public List<Preevento> ListarEventosActivos() throws Exception {
        return local.ListarEventosActivos();
    }

    public List<Evento> listarEventosEnCurso() throws Exception {
        return local.listarEventoEnCurso();
    }

    public List<Evento> listarEventoEnCursoXestado(boolean estado) throws Exception {
        return local.listarEventoEnCurso(estado);
    }

    public Evento buscarEvento(Integer id) throws Exception {
        try {
            return local.find(id);
        } catch (Exception e) {
            local = lookupEventoFacade();
            throw new Exception(e.getStackTrace().toString(), e);
        }

    }

    public void actualizarEvento(Evento eve) throws Exception {
        try {
            local.edit(eve);
        } catch (Exception e) {
            local = lookupEventoFacade();
            throw new Exception(e.getStackTrace().toString(), e);
        }

    }

    public List<Evento> listarCantParticxEvento(Date fechaInicio, Date fechaFin) throws Exception {
        return local.listarCantParticxEvento(fechaInicio, fechaFin);
    }

    public List<Evento> listaEventosxCapitulo(Capitulo cap,Boolean var,Date ini,Date fin) throws Exception {
        return local.listaEventosxCapitulo(cap,var,ini,fin);
    }

    public List<Evento> listaEventosxArea(Area area,Boolean var,Date ini,Date fin) throws Exception {
        return local.listaEventosxArea(area,var,ini,fin);
    }

    public List<Evento> listarEventosEntreFechas(Date fechaInicio, Date fechaFin) throws Exception {
        return local.eventosEntreFechas(fechaInicio, fechaFin);
    }

    public Evento find(Object id) {
        try {
            return local.find(id);
        } catch (Exception e) {
            local = lookupEventoFacade();
            return new Evento();
        }
    }

    //Lizardo Rios
    public List<Preevento> listarTodoEventos() {
        return local.listarEventos();
    }

    //Lizardo Rios
    public List<Preevento> listaEventosPeriodo(Date fechaInicio, Date fechaFin) throws Exception {
        return local.listaEventosPeriodo(fechaInicio, fechaFin);
    }

    //Lizardo Rios
    public List<Preevento> listaEventosPorPeriodo(Date fechaInicio, Date fechaFin) throws Exception {
        return local.listaEventoPorPeriodo(fechaInicio, fechaFin);
    }

    //Lizardo Rios
    public List<Preevento> listaCursoPorPeriodo(Date fechaInicio, Date fechaFin) throws Exception {
        return local.listaCursoPorPeriodo(fechaInicio, fechaFin);
    }

    //Lizardo Rios
    public List<Preevento> listarEventosXAnioXMes(Date fechaInicio, Date fechaFin) throws Exception {
        return local.listarEventosXAnioXMes(fechaInicio, fechaFin);
    }

    //Lizardo Rios
    public List<Evento> listarEventosEnProceso() throws Exception {
        return local.listarEventosEnProceso();
    }

    //Oscar
    public List<IngresosAdapter> listarListaEventos(int codEvento){
        return local.listaDetalleIngresos(codEvento);
    }

     public List<EgresosAdapter> listarListaEgresos(int codEvento){
        return local.listaDetalleEgresos(codEvento);
    }

    public List<UtilidadAdapter> listarUtilidades(int codEvento, int codCapitulo, int codArea, Date desde, Date hasta, int parm) {
       return local.listarUtilidades(codEvento,codCapitulo,codArea,desde,hasta,parm);
    }
}
